/**
 * 
 * \page installation Installation and Configuration of COSI
 * 
 * COSI relies on some external libraries and tools. This page is dedicated to the installation and 
 * configuration of COSI
 * 
 * \section installation_libraries  External libraries and compilation
 * 
 * 
 * The compilation of the COSI software infrastructure requires two external libraries:
 * 
 * 	- tinyxml. This is a small libraries that is used to parse XML files. Let /path/to/tinyxml be the
 * root directory where tinyxml has been installed. Compile tinystr.cpp, tinyxml.xpp, tinyxmlerror.cpp and tinyxmlparser.cpp
 * into a libray called /path/to/tinyxml/libtinyxml.a. If you don't know how to create a static libary under your operating system
 * try look it up using Google. Make sure to compile this files using the TIXML_USE_STL preprocessor symbol.
 * 	- newmat. This is a matrix library. It is used by the building automation system package
 *    for computing intersection of lines and surfaces. Let /path/to/newmat be the root direction of the newmat 
 * installation. The release comes with a set of make files for different 
 * systems. Compile the source code. It should create a static library /path/to/newmat/libnewmat.a
 * 
 * This is enough to be able to compile COSI. I build COSI under Eclipse and I suggest you to do the same as
 * makefiles are managed automatically by Eclipse. Import the COSI project under Eclipse (form the File menu
 * select Import->General->Existing projects into workspace). Edit the project properties by left-clicking
 * on the project and selecting Properties (at the bottom of the menu)
 * 
 * \image html projectproperties.png 
 * \image latex projectproperties.png
 * 
 * Under C/C++ Build, select Settings. This selection will show the compiler settings like preprocessor symbols, 
 * include directories etc. Add the symbol TIXML_USE_STL. COSI will be compiled with the -DTIXML_USE_STL symbol defined.
 * 
 * \image html projectpropertiespreprocessor.png 
 * \image latex projectpropertiespreprocessor.png
 * 
 * Now we need to point to the include directories were all the header files will be found. We need to set up three directories: 
 * the COSI directoy, the newmat directory and the tinyxml directory. Like in the figure below. I have projects for all this libraries, thus
 * I can use a path relative to the workspace path. This is not possible in general for all installations and it depends where the 
 * libraries have been installed. You can enter the full path for each library (i.e. /path/to/tinyxml and /path/to/newmat). Also notice
 * that if you are running a Windows operating system and compiling using GCC under cygwin, the full path must be provided (paths relative
 * to the workspace may create problems).
 * 
 * \image html projectpropertiesdirectories.png 
 * \image latex projectpropertiesdirectories.png
 * 
 * \section installation_tools External tools
 * 
 * Depending on the functionalities that the user of COSI need, several tools can be installed and used 
 * together with a COSI application. COSI communicates with external tools through files: an input file is generated by
 * a dedicated output function, the tool is launched using a system call and the results are parserd by a dedicated input 
 * function. Here is a list of tools that are currently used by COSI.
 * 
 * \subsection installation_partitioner Graph partitioners
 * 
 * To partition large networks into sub-networks, COSI relies on external tools that implement graph partitioning algorithms.
 * For each of them, dedicated functions to generate the necessary inputs and parsers to read the results generated by the tools
 * are provided with this distribution of COSI. Two partitioners are supported: hmetis and PaToH. The support for PaToH is really 
 * motivated by the fact that hmetis does not run under Mac OS X. 
 * 
 * 
 * \section installation_configuration The configuration file
 * 
 * COSI uses external tools to execute some specific tasks. The communication with these tools is implemented through 
 * files and system calls. COSI needs to know the path where these tools are installed in order
 * to call them correctly. The following xml file is an example of configuration:
 * 
 * \verbatim
  <?xml version="1.0" ?>
  <Configuration>
    <COSI version="Cosi 2.0" />
    <TMP root="/tmp" />
    <SYSTEMC root="/Users/apinto/Projects/cosi/src/releases/systemc-2.2.0"/>
    <PARQUET root="/Users/apinto/Projects/cosi/src/releases/PARQUET_050330/Debug" exec="Parquet" />
    <HMETIS  root="/Users/apinto/Projects/cosi/src/releases/hmetis-1.5-osx-i686" exec="hmetis" />
    <KHMETIS  root="/Users/apinto/Projects/cosi/src/releases/hmetis-1.5-osx-i686" exec="khmetis" />
    <SHMETIS  root="/Users/apinto/Projects/cosi/src/releases/hmetis-1.5-osx-i686" exec="shmetis" />
    <PATOH root="/Users/apinto/Projects/cosi/src/releases/PaToH" exec="patoh" />
    <PBSOLVER root="/Users/apinto/Projects/cosi/src/releases/minisat/Debug" exec="minisat" />
    <TRACER root="/Developer/Simulator/GTKwave/bin" exec="gtkwave" />
  </Configuration>
 * \endverbatim
 * 
 * The TMP directory is used to store intermediate files. This directory is used to save all the files that are generated
 * by COSI and that are used to communicate with external tools. 
 * 
 * The SYSTEMC root directory tells COSI where SystemC is installed. SystemC is used to as a simulation library for 
 * on-chip communications. This information is used to generate an appropriate makefile when a SystemC netlist is 
 * generated by COSI. 
 * 
 * The PARQUET configuration is used to tell COSI where the floorplanner is installed. When the floorplanner is called, 
 * the necessary environment variables are first set up and then the executable file is calles to floorplan the chip.
 * 
 * The HMETIS, KMETIS and SHMETIS configuration tell COSI where the hypergraph partitioning tool is located. Alternatively,
 * MAC OS users can also use the PaToH partitioner.
 * 
 * The PBSOLVER configuration tells cose where the pseudo-boolen solver is located. COSI uses minisat+ to solve these
 * kind of problems.
 * 
 * Finally, the TRACER configuration tells cosi where the vcd viewer is located. The viewer is called to visualize the 
 * result of simulation. The command that calls the viewer is embedded in the SystemC simulation that is automatically
 * generated by COSI.
 * 
 * Notice that not all these tools are required in order to run COSI. External tools are needed only by some of the
 * algorithms that are provided in the distribution. Plese, refer to the documentation of each algorithm to know what are the
 * tools required by each of them. 
 * 
 * 
 * */